package com.starmark.core.framework.response;


import com.fasterxml.jackson.annotation.JsonValue;
import com.starmark.core.framework.response.IHttpCode;

/**
 * Ajax 请求时的自定义查询状态码，主要参考Http状态码，但并不完全对应
 *
 * @author starmark
 * @version 2018年5月20日 下午3:19:19
 */

public enum HttpCode implements IHttpCode {
    /**
     * 200请求成功
     */
    OK(200, "操作成功"),
    /**
     * 207频繁操作
     */
    MULTI_STATUS(207, "频繁操作"),
    /**
     * 400请求参数出错
     */
    BAD_REQUEST(400, "请求参数出错"),
    /**
     * 401没有登录
     */
    UNAUTHORIZED(401, "没有登录"),
    /**
     * 402登录失败
     */
    LOGIN_FAIL(402, "登录失败"),
    /**
     * 403没有权限
     */
    FORBIDDEN(403, "没有权限"),
    /**
     * 404找不到页面
     */
    NOT_FOUND(404, "找不到页面"),
    /**
     * 408请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),
    /**
     * 409发生冲突
     */
    CONFLICT(409, "数据编码已存在"),
    /**
     * 411没有定义长度
     */
    LENGTH_REQUIRED(411, "没有定义长度"),
    /**
     * 412条件不满足
     */
    PRECONDITION_FAILED(412, "条件不满足"),
    /**
     * 413数据太大
     */
    ENTITY_TOO_LARGE(413, "数据太大"),
    /**
     * 415不是服务器中所支持的格式
     */
    UNSUPPORTED_MEDIA_TYPE(415, "不是服务器中所支持的格式"),
    /**
     * 421连接数过多
     */
    TOO_MANY_CONNECTIONS(421, "连接数过多"),
    /**
     * 423已被锁定
     */
    LOCKED(423, "已被锁定"),
    /**
     * 500服务器出错
     */
    INTERNAL_SERVER_ERROR(500, "法律不允许"),
    /**
     * /**
     * 503服务器升级中,暂时不可用
     */
    SERVICE_UNAVAILABLE(503, "服务器升级中,暂时不可用");

    private final Integer code;
    private final String msg;

    private HttpCode(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * Return the integer value of this status code.
     */

    @Override
    public Integer code() {
        return this.code;
    }

    @Override
    public String msg() {

        return this.msg;
    }

    @Override
    public String toString() {
        return this.code.toString();
    }
}
